// The contents of this file are subject to the Mozilla Public License Version
// 1.1
//(the "License"); you may not use this file except in compliance with the
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
//
//Software distributed under the License is distributed on an "AS IS" basis,
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
//for the specific language governing rights and
//limitations under the License.
//
//The Original Code is "The Columba Project"
//
//The Initial Developers of the Original Code are Frederik Dietz and Timo
// Stich.
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
//
//All Rights Reserved.
package org.columba.mail.gui.action;

import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import javax.swing.Action;
import javax.swing.KeyStroke;

import org.columba.api.gui.frame.IFrameMediator;
import org.columba.api.plugin.IExtension;
import org.columba.api.plugin.IExtensionHandlerKeys;
import org.columba.api.plugin.PluginException;
import org.columba.api.plugin.PluginHandlerNotFoundException;
import org.columba.core.gui.action.AbstractColumbaAction;
import org.columba.core.plugin.PluginManager;
import org.columba.mail.mailchecking.MailCheckingManager;
import org.columba.mail.resourceloader.MailImageLoader;
import org.columba.mail.util.MailResourceLoader;

public class ReceiveSendAction extends AbstractColumbaAction {
	public ReceiveSendAction(IFrameMediator controller) {
		super(controller, MailResourceLoader.getString("menu", "mainframe",
				"menu_file_receivesend"));

		// tooltip text
		putValue(SHORT_DESCRIPTION, MailResourceLoader.getString("menu",
				"mainframe", "menu_file_receivesend_tooltip").replaceAll("&",
				""));

		// toolbar text
		putValue(TOOLBAR_NAME, MailResourceLoader.getString("menu",
				"mainframe", "menu_file_receivesend_toolbar"));

		// small icon for menu
		putValue(SMALL_ICON, MailImageLoader.getSmallIcon("mail-send-receive.png"));

		// large icon for toolbar
		putValue(LARGE_ICON, MailImageLoader.getIcon("mail-send-receive.png"));

		// shortcut key
		putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F9, 0));
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public void actionPerformed(ActionEvent evt) {
		// check for new messages
		MailCheckingManager.getInstance().checkAll();

		try {
			// send all unsent messages found in Outbox

			Action sendAllAction;

			IExtension extension = PluginManager
					.getInstance().getExtensionHandler(IExtensionHandlerKeys.ORG_COLUMBA_CORE_ACTION)
					.getExtension("SendAll");
			sendAllAction = (Action) extension
					.instanciateExtension(new Object[] { getFrameMediator() });
			if (sendAllAction.isEnabled())
				sendAllAction.actionPerformed(evt);

		} catch (PluginHandlerNotFoundException e) {
			e.printStackTrace();
		} catch (PluginException e) {
			e.printStackTrace();
		}
	}
}